import jwt
from rest_framework.authentication import BaseAuthentication
from rest_framework.exceptions import AuthenticationFailed

from utils.tooljwt import tooljwt
from rest_framework.response import Response
from user import models


# 第一一个认证的类
class JWTAuthenticationss(BaseAuthentication):

    def authenticate(self, request):
        # 从前端获取token
        tokendata=request.META.get('HTTP_AUTHORIZATION',None)
        if tokendata:
        #    截取有效的token
            token=tokendata.split(" ")[1]
            # 解码获取用户的信息
            userdata=tooljwt.checktoken(token)

            # 解码之后的用户信息
            if userdata:
                # 拿到前端传过来的用户信息
                userid=userdata["userid"]
                # 查询数据库的用户信息是否存在
                user=models.UserModel.objects.filter(id=userid)
                # 茹过存在返回用户信息和token
                return user,token
        else:
            return None,None

    def authenticate_header(self, request):
        return 'Bearer realm="api"'



